package qdu.edu.com.fushanf4.service.count.usertype.search2characters.count.split;

import org.apache.hadoop.mapreduce.Job;
import qdu.edu.com.fushanf4.service.count.TextIntWritableCountReducer;
import qdu.edu.com.fushanf4.utils.ConfigurationUtil;
import qdu.edu.com.fushanf4.utils.DriverUtil;

import java.io.IOException;

/**
 * 切分原始的字符串，每两个汉字切分一次，然后向后平移一个汉字位置，继续切分，最后计数
 * 输入为CleanStringDriver类的输出
 * 例如：一二三四    切分为： 一二 二三 三四
 * 输入数据要求：已经过滤掉非汉字字符，并且每一串连续的汉字占据一行。即上一个Mapper程序应将文件中非汉字的字符替换成\t或\n。先用\n试试
 * 经考虑，使用\n切分，这样可以减少工作量。因为\t隔开后还是需要再次切分
 * 输入：/hadoop/service/count/usertype/search2characters/count/clean/output
 * 输出：/hadoop/service/count/usertype/search2characters/count/split/output
 */
public class SplitStringAndSplicingTwoCharactersDriver extends DriverUtil {
    public static void main(String[] args) throws IOException {
        SplitStringAndSplicingTwoCharactersDriver splitStringAndSplicingTwoCharactersDriver = new SplitStringAndSplicingTwoCharactersDriver();
        splitStringAndSplicingTwoCharactersDriver.run(args);
    }

    @Override
    public Job runJob(String[] path) throws IOException {
        Job job = ConfigurationUtil.getJob();

        job.setJarByClass(SplitStringAndSplicingTwoCharactersDriver.class);
        job.setMapperClass(SplitStringAndSplicingTwoCharactersMapper.class);
        TextIntWritableCountReducer.setReduceOfAll(job);

        ConfigurationUtil.setPathAndRunJob(path, job);

        return job;
    }
}
